package guide;

import java.util.ArrayList;
import java.util.List;

/**
 * @author fance
 * @date 18-4-1 下午12:31
 */
public class Bit {
    /*a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    交换
    二进制1 的个数  n & (n - 1)*/

    public int oddTimesNum(int[] a) {
        int e = 0;
        for (int tmp: a
             ) {
            e ^= tmp;
        }
        return e;
    }
    // 两个出现一次的
    public List<Integer> oddTimesNumII(int[] a) {
        List<Integer> res = new ArrayList<>();
        int e = 0;
        for (int tmp: a
                ) {
            e ^= tmp;
        }
        int rightOne = e & (~e + 1);
        int e2 = 0;
        for (int tmp: a
                ) {
            if ((tmp & rightOne) != 0) {
                e2 ^= tmp;
            }
        }
        res.add(e2);
        res.add(e ^ e2);
        return res;
    }

    //出现k 次 只有一个出现1次

}
